Maintenance of multiple copies of data is part of the disaster recovery function in data processing operations to deal with the eventuality that the data is unavailable, damaged, or lost. Institutional users of data processing systems commonly maintain quantities of highly important information and expend large amounts of time and money to protect data against unavailability resulting from disaster or catastrophe. One class of techniques for maintaining redundant data copies is termed mirroring, in which data processing system maintains copies of valuable information on-site on a removable storage media or in a secondary mirrored storage site positioned locally or remotely. Remote mirroring off-site but within a metropolitan distance, for example up to about 200 kilometers, protects against local disasters including fire, power outages, or theft. Remote mirroring over geographic distances of hundreds of kilometers is useful for protecting against catastrophes such as earthquakes, tornados, hurricanes, floods, and the like. Many data processing systems employ multiple levels of redundancy to protect data, positioned at multiple geographic distances.
Data processing systems realize remote mirroring using synchronous mirroring or asynchronous mirroring. Synchronous remote copies have advantages when response time is relatively unimportant, distances between primary and secondary storage are short, and data cannot be lost. Synchronous mirroring is generally selected as a best choice for rapid recovery. In contrast, asynchronous mirroring is used when the smallest possible performance impact is to be imposed on the primary site, speed is important, and mirrored data is to travel long distances. Asynchronous mirroring is often used for very large geographical scale operations when loss of most recent data is acceptable.
Precedence graph equivalence for a remote mirroring system means that the write commands to the storage, as defined by the initiator on the primary site, are committed in the same order on the secondary target so that the data on the secondary target at all times have sufficient data consistency to recover from a disaster. A simple and straightforward technique to ensure precedence graph equivalence has been to record the exact execution order of each command on a primary target and communicate the ordered list to the secondary target. The secondary target can then execute the commands in precisely the same order, preserving execution-order equivalence. Execution-order equivalence is thus a more highly constrained subcase of desired precedence graph equivalence. The difficulty with a system constrained to execution-order equivalence is that execution of a list of commands in a purely sequential order at the secondary target imposes long delays in circumstances when many commands could otherwise execute concurrently and in an unconstrained order. In the past, remote mirroring of slow Wide Area Network (WAN) links masked the performance degradation at the remote site. The imminent availability of high speed links will avoid the historical bottleneck, exposing the performance degradation caused by purely sequential command execution.